package com.such.kit.database.bean;

/**
 * @author SUCH
 * <pre>
 * 数据库迁移表过滤器
 * 可以通过指定过滤维度，限制抽取的数据范围
 * 过滤维度：
 * {@link #tableSchemaFilter} 表模式
 * {@link #tableNameFilters} 表名
 * {@link #tableTypeFilters} 表类型
 * {@link #tableInfoFilters} 表信息
 * </pre>
 */
public class MigrationTableFilter {

	/** tableSchemaFilter：表模式 ["" 获取没有模式的数据 | null 获取所有模式的数据]，可以使用单字符通配符 [_] 或多字符通配符 [%]，当参数中存在 _ % 则使用 / 进行转义，默认为 [null] */
	private String tableSchemaFilter = null;
	/** tableNameFilters：表名，可以使用单字符通配符 [_] 或多字符通配符 [%]，当参数中存在 _ % 则使用 / 进行转义，默认为 [%] */
	private String[] tableNameFilters = new String[] {"%"};
	/** tableTypeFilters：表类型，参照 DatabaseTable.TYPE_xxx，默认为 [TYPE_TABLE] */
	private String[] tableTypeFilters = new String[] {DatabaseTable.TYPE_TABLE};
	/** tableInfoFilters：表信息，参照 DatabaseTable.INFO_xxx，默认为 [INFO_COLUMN | INFO_PRIMARY_KEY | INFO_FOREIGN_KEY | INFO_INDEX] */
	private String[] tableInfoFilters = new String[] {DatabaseTable.INFO_COLUMN, DatabaseTable.INFO_PRIMARY_KEY, DatabaseTable.INFO_FOREIGN_KEY, DatabaseTable.INFO_INDEX};

	public MigrationTableFilter() {
	}

	public MigrationTableFilter(String tableSchemaFilter, String[] tableNameFilters) {
		this.tableSchemaFilter = tableSchemaFilter;
		this.tableNameFilters = tableNameFilters;
	}

	/** [参考 {@link #tableSchemaFilter}] */
	public String getTableSchemaFilter() {
		return this.tableSchemaFilter;
	}
	
	/** [参考 {@link #tableSchemaFilter}] */
	public void setTableSchemaFilter(String tableSchemaFilter) {
		this.tableSchemaFilter = tableSchemaFilter;
	}
	
	/** [参考 {@link #tableNameFilters}] */
	public String[] getTableNameFilters() {
		return this.tableNameFilters;
	}
	
	/** [参考 {@link #tableNameFilters}] */
	public void setTableNameFilters(String[] tableNameFilters) {
		this.tableNameFilters = tableNameFilters;
	}
	
	/** [参考 {@link #tableTypeFilters}] */
	public String[] getTableTypeFilters() {
		return this.tableTypeFilters;
	}
	
	/** [参考 {@link #tableTypeFilters}] */
	public void setTableTypeFilters(String[] tableTypeFilters) {
		this.tableTypeFilters = tableTypeFilters;
	}
	
	/** [参考 {@link #tableInfoFilters}] */
	public String[] getTableInfoFilters() {
		return this.tableInfoFilters;
	}
	
	/** [参考 {@link #tableInfoFilters}] */
	public void setTableInfoFilters(String[] tableInfoFilters) {
		this.tableInfoFilters = tableInfoFilters;
	}

}
